Data communication in a computer network involves the exchange of data between two or more entities interconnected by communication links. These entities are typically software programs executing on hardware computer systems that include locally attached storage devices. Depending on their roles within the network, these computer systems may serve as intermediate network nodes or end nodes. Examples of end nodes may include client and server systems coupled to a communication link, such as a point-to-point link, shared local area network, wide area network or virtual private network implemented over a public network, such as the Internet.
A server is a computer configured to provide specific services. When operating according to a client/server model of information delivery, the server may be configured to allow many clients to access its services. In this model, the client may comprise an application executing on an operating system that “connects” to the server over the computer network. Each client may request the services of the server by issuing protocol messages (in the form of packets) to the server over the network. The server then responds to the client request by returning the requested services in the form of packets transported over the network.
A filer is a server configured to provide file service relating to the organization of information on storage devices, such as disks. The filer may be embodied as a storage system including a storage operating system that implements a file system to logically organize the information as a hierarchical structure of directories and files on the disks. Each “on-disk” file may be implemented as a set of disk blocks configured to store information, such as data, whereas the directory may be implemented as a specially formatted file in which information about other files and directories are stored.
An example of an application running on a client is the Microsoft® Exchange application available from Microsoft Corporation, of Redmond, Wash. Microsoft Exchange is a messaging and collaboration software product that provides a variety of applications for group interaction using networked computer systems. An Exchange application can run on a variety of operating systems including, for example, the Microsoft Windows® NT™ or Microsoft Windows® 2000 operating system. A file system designed for use with the NT or Windows 2000 operating system is the NT file system (NTFS). In NTFS, each unit of information associated with a file, including its name, its owner, its time stamps and its data contents, is implemented as a file attribute. Both files and directories have attributes, wherein each attribute consists of a single stream or sequence of bytes. This implementation facilitates the addition of more attributes, including data content attributes, to a file. The NTFS file system is well-known and further described in Inside the Windows NT File System by Helen Custer, Microsoft Press, 1994.
The conventional Small Computer System Interface (SCSI) protocol is a block access protocol configured to access storage devices (disks). Many computer systems use the SCSI protocol to access data on storage devices locally attached to the systems. Many systems also support facilities adapted to access network attached storage through file access protocols, such as the Network File System (NFS) and Common Internet File System (CIFS) protocols. Applications running on a client system can access files contained on either locally attached or network attached storage.
There are differences, however, in the interpretation of data that is exchanged using block access protocols compared to file access protocols. A block access protocol, such as the SCSI protocol, “assumes” that the storage device is composed of a sequence of blocks, each containing either data or available space for storing data. Requests for retrieving (reading) or storing (writing) data contain references for block numbers and data lengths. As a result, an application issuing a SCSI request (i.e., a SCSI requester) must have knowledge of the metadata mapping between the desired data and the physical location of that data on the storage device.
In contrast, file access protocols assume that the server contains a file system on which file data is stored. The file system generally refers to structuring of data and metadata on storage devices, such as disks, which permits reading/writing of data on those disks. The file system also includes mechanisms for performing these operations. While different file access protocols provide different semantics, each protocol fundamentally provides access to file system constructs, such as directories and files. The file server is responsible for mapping the files to its storage system.
A filer generally provides higher data capacity, data storage speed and data access speed than disks locally attached to a client. It is therefore often desirable for a client system to utilize a filer for networked data storage. However, some applications running on a client are unable to utilize networked data storage because the file system operations provided by the file access protocol may not fully match the operations provided by the file system residing on the client. For example, some operations that are available on the NTFS file system used with the Windows 2000 operating system are not available over the CIFS protocol. One solution that allows those applications that require block-based file systems is described in U.S. patent application Ser. No. 10/188,250, now U.S. Pat. No. 7,584,279 entitled SYSTEM AND METHOD FOR MAPPING BLOCK-BASED FILE OPERATIONS TO FILE LEVEL PROTOCOLS, by Dennis E; Chapman, the teachings of which are hereby incorporated by reference as though fully set forth herein.
While generally, only one host computer is connected to a SCSI bus, it is possible for multiple controllers to be interconnected to a SCSI bus. Additionally, as the SCSI protocol operates across multiple forms of networks, such as Fibre Channel, Transport Control Protocol/Internet Protocols, and InfiniBand, shared access to SCSI storage is widely implemented. Whenever this shared access occurs, there is a possibility of multiple controllers contending for the disks or other resources on the SCSI bus. To allow multiple hosts to coordinate their access to a shared storage device, the SCSI protocol includes a reserve and release mechanism that allows hosts to establish, release, or revoke exclusive access to a specific SCSI device. This exclusivity allows limited write access to the storage device and optionally, limited read access to the storage device as well. These SCSI reservations and their attributes are described in further detail in SCSI-3 Primary Commands published by the American National Standards Institute, Inc., the contents of which are hereby incorporated by reference.
Many clustering systems use SCSI reservations for synchronization within the cluster. For example, the Microsoft Cluster Service (MSCS) uses SCSI reservations to determine which system should be the cluster master. MSCS does this by relying on one system being able to require a SCSI reservation on a shared disk (the quorum disk). A Microsoft Windows 2000 Advanced Server System that is bidding to be a master of a MSCS cluster attempts to acquire a SCSI shared read reservation on the quorum disk. If the system acquires the reservation, then it succeeds in becoming the cluster master, however if it fails to obtain a SCSI reservation, then another system is the master of the cluster.
As described above, a file server or filer generally provides higher data capacity, data storage speed and data access speed than disks locally attached to a client. However, file servers may prefer to use a file-based protocol, such as the Network File System (NFS) protocol, and are therefore, incompatible with a cluster requiring directly attached SCSI disks. Consequently, such a file server cannot be reserved using SCSI reservations, and therefore can not be utilized with cluster products that employ SCSI reservation semantics, such as the Microsoft Clustering System.
While the above-described patent application, entitled SYSTEM AND METHOD FOR MAPPING BLOCK-BASED FILE OPERATIONS TO FILE LEVEL PROTOCOLS, describes a SCSI block-based system and method for mapping a read and write operations to a file level protocol, a reliable methodology for allowing SCSI reservations to be utilized with a file server attached to a clustering system is required.